package main


import (
	"context"
	"fmt"
	"git.900sui.cn/kc/base/utils"
	"git.900sui.cn/kc/kcgin"
	"git.900sui.cn/kc/kcgin/logs"
	"git.900sui.cn/kc/redis"
	"git.900sui.cn/kc/rpcinterface/client/bus"
	redis2 "github.com/gomodule/redigo/redis"
	"github.com/robfig/cron"
	"strconv"
	"strings"
	"time"
)

//上海银行提现结果查询

func cashResultDo(){
	new(utils.KcLog).GetInstance( kcgin.AppConfig.String("crontab.log.cashResult"))

	//上海银行提现待查询结果订单号队列
	const  BOSC_CASH_QUERY_RESULT_QUE = "bosc_cashr_1001_0001"
	cashOrder, err := redis2.String( redis.RedisGlobMgr.Lpop(BOSC_CASH_QUERY_RESULT_QUE) )
	if err != nil{
		//utils.Logerr.Printf("没有任务")
		return
	}

	vals := strings.Split(cashOrder, "|")
	orderSn := vals[0] //订单号
	jgTime, _ := strconv.Atoi( vals[1] ) //间隔时间 秒
	cashTime, _ := strconv.Atoi(vals[2]) //发送时间戳

	if ( time.Now().Local().Unix() - int64(cashTime) ) < int64(jgTime){
		//未到执行时间，重新加入队列
		redis.RedisGlobMgr.Rpush(BOSC_CASH_QUERY_RESULT_QUE, fmt.Sprintf("%s|%s|%s", orderSn, vals[1], vals[2] ))
		return
	}

	rpcDepos := new(bus.Depos).Init()
	reply := false
	err = rpcDepos.BoscCashResultQuery(context.Background(), &orderSn, &reply)
	if err != nil{
		utils.Logerr.Printf("上海银行提现结果处理失败, 订单号：%s 错误信息:%v.",  orderSn, err.Error())
	}
	utils.Logerr.Printf("上海银行提现结果处理完成 订单号：%s", orderSn)
}

/**
 * 上海银行提现结果业务处理
 * 每3秒执行一次
 */
func main() {
	logs.Info("Environment Variable:MSF_ENV:", kcgin.KcConfig.RunMode)
	c := cron.New()
	//3秒钟执行一次
	spec := "*/3 * * * * ?" //秒-分-时-日-月-周【忽略】
	_ = c.AddFunc(spec,cashResultDo)
	c.Start()
	select {}
}
